<?php
//____________________________01s____________________________
function _highl_data_type($str){	
$datatypes='ATOM BOOL BOOLEAN BYTE CHAR COLORREF DWORD DWORDLONG DWORD_PTR ' .
						'DWORD32 DWORD64 FLOAT HACCEL HALF_PTR HANDLE HBITMAP HBRUSH ' .
						'HCOLORSPACE HCONV HCONVLIST HCURSOR HDC HDDEDATA HDESK HDROP HDWP ' .
						'HENHMETAFILE HFILE HFONT HGDIOBJ HGLOBAL HHOOK HICON HINSTANCE HKEY ' .
						'HKL HLOCAL HMENU HMETAFILE HMODULE HMONITOR HPALETTE HPEN HRESULT ' .
						'HRGN HRSRC HSZ HWINSTA HWND INT INT_PTR INT32 INT64 LANGID LCID LCTYPE ' .
						'LGRPID LONG LONGLONG LONG_PTR LONG32 LONG64 LPARAM LPBOOL LPBYTE LPCOLORREF ' .
						'LPCSTR LPCTSTR LPCVOID LPCWSTR LPDWORD LPHANDLE LPINT LPLONG LPSTR LPTSTR ' .
						'LPVOID LPWORD LPWSTR LRESULT PBOOL PBOOLEAN PBYTE PCHAR PCSTR PCTSTR PCWSTR ' .
						'PDWORDLONG PDWORD_PTR PDWORD32 PDWORD64 PFLOAT PHALF_PTR PHANDLE PHKEY PINT ' .
						'PINT_PTR PINT32 PINT64 PLCID PLONG PLONGLONG PLONG_PTR PLONG32 PLONG64 POINTER_32 ' .
						'POINTER_64 PSHORT PSIZE_T PSSIZE_T PSTR PTBYTE PTCHAR PTSTR PUCHAR PUHALF_PTR ' .
						'PUINT PUINT_PTR PUINT32 PUINT64 PULONG PULONGLONG PULONG_PTR PULONG32 PULONG64 ' .
						'PUSHORT PVOID PWCHAR PWORD PWSTR SC_HANDLE SC_LOCK SERVICE_STATUS_HANDLE SHORT ' .
						'SIZE_T SSIZE_T TBYTE TCHAR UCHAR UHALF_PTR UINT UINT_PTR UINT32 UINT64 ULONG ' .
						'ULONGLONG ULONG_PTR ULONG32 ULONG64 USHORT USN VOID WCHAR WORD WPARAM WPARAM WPARAM '.
						'char bool short int __int32 __int64 __int8 __int16 long float double __wchar_t ' .
						'clock_t _complex _dev_t _diskfree_t div_t ldiv_t _exception _EXCEPTION_POINTERS ' .
						'FILE _finddata_t _finddatai64_t _wfinddata_t _wfinddatai64_t __finddata64_t ' .
						'__wfinddata64_t _FPIEEE_RECORD fpos_t _HEAPINFO _HFILE lconv intptr_t ' .
						'jmp_buf mbstate_t _off_t _onexit_t _PNH ptrdiff_t _purecall_handler ' .
						'sig_atomic_t size_t _stat __stat64 _stati64 terminate_function ' .
						'time_t __time64_t _timeb __timeb64 tm uintptr_t _utimbuf ' .
						'va_list wchar_t wctrans_t wctype_t wint_t signed '.
						'DTPCHAR DT_CONST_PCHAR unsigned';
 
$datatypes=_str2arr($datatypes,'/\s{1,}/');	
$pattern_arr=array();	
	foreach(  $datatypes as $k=>$v  ){ 
		 $pattern_arr[]='/([\'\s\(,\t\*>])('.$v.')([\)\s\(\',\t\*<])/'; 
		 $pattern_arr[]='/^([\s]{0,})('.$v.')([\)\s\(\*\&,\t])/';  
	}	
    return preg_replace_callback($pattern_arr,"_highl_data_type_callback",$str);
		
}

function _highl_data_type_callback($matchs){//高亮度数据类型  High("#fc0022",18)
	return  $matchs[1]._mkcstr('<b>'.$matchs[2].'</b>')->High("#fc0022",18)->Val().$matchs[3];
}//#009  #FF2200
//____________________________02s____________________________
function _highl_keywords($str){	
	$keywords =	'break case catch class const __finally __exception __try ' .
						'const_cast continue private public protected __declspec ' .
						'default delete deprecated dllexport dllimport do dynamic_cast ' .
						'else enum explicit extern if for friend goto inline ' .
						'mutable naked namespace new noinline noreturn nothrow ' .
						'register reinterpret_cast return selectany ' .
						'sizeof static static_cast struct switch template this ' .
						'thread throw true false try typedef typeid typename union ' .
						'using uuid virtual void volatile whcar_t while function #include  #define #define #pragma '.
						'comment #ifndef #endif as  foreach #ifdef array main WinMain var';//main WinMain 是我自己定义的
	$keywords=_str2arr($keywords,'/\s{1,}/');	
    $pattern_arr2=array();	
    foreach(  $keywords as $k=>$v  ){ 	 
	   $pattern_arr2[]='/([\s\(\}\{\=,])('.$v.')([\)\s\(\:\{\;])/';
	   $pattern_arr2[]='/^(\s*)('.$v.')([\)\s\(\:\&;])/';
	//$pattern_arr2[]='/(\s*|\(*)('.$v.')([\)\s\(\:\&;])/';
	 }		
    return preg_replace_callback($pattern_arr2,"_highl_keywords_callback",$str,-1);			
}
function _highl_keywords_callback($matchs){//keywords #0033cc 18px

	return  $matchs[1]._mkcstr('<b>'.$matchs[2].'</b>')->High("#0033cc",18)->Val("#0033cc",18).$matchs[3];
}
//____________________________03s____________________________

function _highl_functions($str){
	$functions =	'assert isalnum isalpha iscntrl isdigit isgraph islower isprint' .
						'ispunct isspace isupper isxdigit tolower toupper errno localeconv ' .
						'setlocale acos asin atan atan2 ceil cos cosh exp fabs floor fmod ' .
						'frexp ldexp log log10 modf pow sin sinh sqrt tan tanh jmp_buf ' .
						'longjmp setjmp raise signal sig_atomic_t va_arg va_end va_start ' .
						'clearerr fclose feof ferror fflush fgetc fgetpos fgets fopen ' .
						'fprintf fputc fputs fread freopen fscanf fseek fsetpos ftell ' .
						'fwrite getc getchar gets perror printf putc putchar puts remove ' .
						'rename rewind scanf setbuf setvbuf sprintf sscanf tmpfile tmpnam ' .
						'ungetc vfprintf vprintf vsprintf abort abs atexit atof atoi atol ' .
						'bsearch calloc div exit free getenv labs ldiv malloc mblen mbstowcs ' .
						'mbtowc qsort rand realloc srand strtod strtol strtoul system ' .
						'wcstombs wctomb memchr memcmp memcpy memmove memset strcat strchr ' .
						'strcmp strcoll strcpy strcspn strerror strlen strncat strncmp ' .
						'strncpy strpbrk strrchr strspn strstr strtok strxfrm asctime ' .
						'clock ctime difftime gmtime localtime mktime strftime time  MessageBox PostQuitMessage DestroyWindow '.
						'PostQuitMessage DefWindowProc ValidateRect TranslateMessage DispatchMessage ShowWindow '.
						'UpdateWindow RegisterClassEx UnregisterClass';
						
		$functions=_str2arr($functions,'/\s{1,}/');	
    $pattern_arr3=array();	
    foreach(  $functions as $k=>$v  ){  
	 $pattern_arr3[]='/([\s\(]|^)('.$v.')([\)\s\(])/';
	//$pattern_arr3[]='/([^a-zA-Z0-9<>]|^)('.$v.')([^a-zA-Z0-9<>]|$)/';
	}	
	
    return  preg_replace_callback($pattern_arr3,"_highl_functions_callback",$str);	
	
	
}
function _highl_functions_callback($matchs){//func  ff3399  18
	return  $matchs[1]._mkcstr('<b>'.$matchs[2].'</b>')->High("#ff3399",18)->Val().$matchs[3];
}//ff3399  functions



//____________________________04s____________________________
//_highl_
function _highl_vars($retstr){
	
	 $retstr= preg_replace(array("/([\$]{1}[a-zA-Z_0-9]{1,})/"),
		  array(  _mkcstr('<b>\\1</b>')->High("#06f",18)->Val("#0033cc",18)   ),$retstr);	//高亮变量
	
	 $retstr= preg_replace(array(
	"/([^a-zA-Z0-9_\-<>]|^)((?:[sgv]{1}_|[inprlhsw][A-Z_]|ch[A-Z_]|char[A-Z_]|fn[A-Z_]|".
	"b[A-Z_]|lp[A-Z_]|h[A-Z_]|str[A-Z_]|sz[A-Z_]|by[A-Z_]|v[A-Z_]|msg[A-Z_]|dw[A-Z_]|dt)[a-zA-Z_0-9]{0,})/")
	,'\\1<font  style="color:#06f;font-size:18px;"><b>'.'\\2'.'</b></font>\\3',$retstr);	//高亮变量
	
		  for($j=0;$j<1;$j++){
			  $retstr= preg_replace(array(
"/([^a-zA-Z0-9_\-<>\"\']|^)(ix|iy|iz|cx|cy|[a-z]|ps|msg|hwnd|light|source|des|Direction)([^a-zA-Z0-9_<>\"\'&])/")
,'\\1<font  style="color:#06f;font-size:18px;"><b>'.'\\2'.'</b></font>\\3',$retstr);	//高亮变量
		  }
	
	$retstr= preg_replace(array("/([^a-zA-Z0-9_\-<>\"\']|^)(ix|iy|iz|cx|cy|[a-z])([0-9]{1,})([^a-zA-Z0-9_<>\"\'])/")
	,'\\1<font  style="color:#06f;font-size:18px;"><b>'.'\\2\\3'.'</b></font>\\4',$retstr);	//高亮变量
	
	return $retstr;
	}
//____________________________05s____________________________	
	function _highl_strings_callback($matchs){
	 return  _mkcstr('<b>'.preg_replace("/<.*?>/","",$matchs[1]).'</b>')->Fast("#060",18);//33ccff c00 060 	
}
?>